package edu.hgnc.bridge;

/**
 * 为什么要生成桥接方法呢？
 * 在1.5之前创建对象之后，可以想其中放置任何类型的元素，无法确定和限制具体的类型，二引入泛型之后可以指定存放什么类型的数据，
 * 泛型在此处起到的作用就是检查向集合中添加到对象类型是否匹配泛型类型，如果不正常，那么在编译的时候就会出错，而不比等到运行时才发现错误
 * 但是泛型是在之后的版本中出现的，为了向前兼容，所以会在编译时去掉泛型，但是可以通过反射api来获取泛型的信息，在编译时通过泛型来保证类型的正确性，而不必等到运行时
 * 才发现类型不正确，正式由于java泛型的擦出特效，如果不发生桥接方法，那么预1.5之前的字节码就不兼容了
 * 因为有了继承关系，如果不生产桥接方法，那么SubzClass就没有实现接口中声明的方法，语义就不正确了，所以编译器才会生成桥接方法来保证兼容性
 */
public class TestA {
	public static void main(String[] args) {
		SuperClass c = new SubClass();
		c.param("123");
		c.param(1234);
		c.param(123F);
	}
}
